// 引入核心滚动组件
import BScroll from '@better-scroll/core';
// 引入插件,使scroll插件动态监测内容高度
import ObserveDOM from '@better-scroll/observe-dom';
// 引入composition API生命周期函数
import { onMounted, onUnmounted, ref } from 'vue';

BScroll.use(ObserveDOM); // 可以自动探测DOM更新
export default function userScroll(wrapperRef, options, emit) {
  const scroll = ref(null);

  onMounted(() => {
    // 初始化滚动组件,传入DOM对象
    scroll.value = new BScroll(wrapperRef.value, { observeDOM: true, ...options });

    // probeType监听
    if (options.probeType > 0) {
      // 监听scroll事件
      scroll.value.on('scroll', (pos) => {
        // 向外派发scroll事件(类似子传父)
        emit('scroll', pos);
      });
    }
  });

  // 销毁
  onUnmounted(() => {
    // 卸载组件
    scroll.value.destroy();
  });

  return scroll;
}
